/**
 * 前端服务集成测试脚本
 * 用于验证租户、用户、权限服务的Mock数据集成是否正常工作
 */

import { tenantService } from '../services/tenant.service'
import { userService } from '../services/user.service'
import { permissionService } from '../services/permission.service'
import { useMockService } from '../services/mock.service'

console.log('=== Matrix Framework 前端服务集成测试 ===')
console.log(`Mock服务状态: ${useMockService ? '启用' : '禁用'}`)

// 测试租户服务
async function testTenantService() {
  console.log('\n--- 测试租户管理服务 ---')
  try {
    // 测试获取租户列表
    const tenants = await tenantService.getTenants({
      skipCount: 0,
      maxResultCount: 5
    })
    console.log('✅ 获取租户列表成功:', tenants.totalCount, '个租户')

    // 测试获取租户统计
    const statistics = await tenantService.getTenantStatistics()
    console.log('✅ 获取租户统计成功:', statistics)

    return true
  } catch (error) {
    console.error('❌ 租户服务测试失败:', error.message)
    return false
  }
}

// 测试用户服务
async function testUserService() {
  console.log('\n--- 测试用户管理服务 ---')
  try {
    // 测试获取用户列表
    const users = await userService.getUsers({
      skipCount: 0,
      maxResultCount: 5
    })
    console.log('✅ 获取用户列表成功:', users.totalCount, '个用户')

    // 测试获取用户统计
    const statistics = await userService.getUserStatistics()
    console.log('✅ 获取用户统计成功:', statistics)

    return true
  } catch (error) {
    console.error('❌ 用户服务测试失败:', error.message)
    return false
  }
}

// 测试权限服务
async function testPermissionService() {
  console.log('\n--- 测试权限管理服务 ---')
  try {
    // 测试获取角色列表
    const roles = await permissionService.getRoles({
      skipCount: 0,
      maxResultCount: 10
    })
    console.log('✅ 获取角色列表成功:', roles.totalCount, '个角色')

    // 测试获取权限列表
    const permissions = await permissionService.getAllPermissions()
    console.log('✅ 获取权限列表成功:', permissions.length, '个权限')

    return true
  } catch (error) {
    console.error('❌ 权限服务测试失败:', error.message)
    return false
  }
}

// 运行所有测试
async function runAllTests() {
  console.log('开始运行集成测试...\n')

  const results = {
    tenant: await testTenantService(),
    user: await testUserService(),
    permission: await testPermissionService()
  }

  const passedTests = Object.values(results).filter(Boolean).length
  const totalTests = Object.keys(results).length

  console.log('\n=== 测试结果汇总 ===')
  console.log(`总测试数: ${totalTests}`)
  console.log(`通过测试: ${passedTests}`)
  console.log(`失败测试: ${totalTests - passedTests}`)

  if (passedTests === totalTests) {
    console.log('🎉 所有测试通过！前端服务集成成功！')
  } else {
    console.log('⚠️ 部分测试失败，请检查相关服务实现')
  }

  return results
}

// 导出测试函数
export {
  testTenantService,
  testUserService,
  testPermissionService,
  runAllTests
}

// 如果直接运行此脚本，执行所有测试
if (typeof window !== 'undefined') {
  // 浏览器环境，将测试函数添加到全局对象
  (window as any).matrixTests = {
    testTenantService,
    testUserService,
    testPermissionService,
    runAllTests
  }
  console.log('测试函数已添加到 window.matrixTests，可在浏览器控制台中使用')
}